package kr.co.choongang;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/CartSave")
public class CartSaveServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String product = request.getParameter("product");
		
		//세션 객체 얻기
		HttpSession session = request.getSession();
		/*보통 브라우저 > Servlet 영역으로 넘어올 때는 세션ID를 넘겨주기 때문에
		  기존에 Session()이 있으면 기존의 영역을 참조하여(SessionID) 기존의 영역을 사용 
		  없다면 새로운 Session()을 생성
		  
		  But, Servlet > Servlet으로 넘어올 때는 
		  Session()의 영역을 참조해서 저장한 값을 가져오는것. 
		  따라서, Servlet > Servlet의 영역에서 getSession(false)가 아닌 getSession()으로
		  새로운 Session()을 만들경우에는 새로운 Session()의 영역(SessionID)이 만들어짐.
		  
		  * 책 p.263쪽의 그림을 참조하도록 한다.
		  */
		ArrayList<String> list = (ArrayList<String>)session.getAttribute("product");
		
		if(list==null){
			list=new ArrayList<String>();
			list.add(product);
			session.setAttribute("product", list);
		}else{
			list.add(product);
		}
		
		out.print("product 추가");
		out.print("<a href='CartBasket'>장바구니 보기</a>");
	}
}
